<?php


namespace app\admin\validate\auth;


use think\Validate;
use function validatePassword;
use function validateUsername;

class AdminValidate extends Validate{

    protected $rule =   [
        'id' => 'require',
        'password' => 'require|checkPassword',
        'username' => 'require|unique:admin|checkUsername',
        'group_id' => 'require|number',
        'mobile' => 'require'
    ];

    protected $message  =   [
        'password.require' => '请填写密码',
        'password.confirm' => '两次输入密码不一致',
        'username.require' => '用户名必填',
        'username.unique' => '用户名被占用',
        'group_id' => '所属角色错误',
    ];

    public function sceneAdd (): AdminValidate
    {
        return $this->only(['username', 'group_id', 'password']);
    }

    public function sceneEdit (): AdminValidate
    {
        return $this->only(['id', 'username', 'group_id', 'password'])
            ->remove('password', 'require');
    }

    protected function checkUsername($value, $rule, $data=[]): bool|string
    {
//        第一个字符为英文，只能用字母、数字、汉字、下划线，总长度限制在4-12位的昵称
        return validateUsername($value) ? true : '用户名第一个字符必须为英文，只能由4-12位的字母、数字、汉字、下划线组成';
    }

    protected function checkPassword($value, $rule, $data=[]): bool|string
    {
        return validatePassword($value) ? true : '密码必须包含字母、数字和符号中的两种，由8-16位组成';

    }

}
